home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Shareware / IDimager Personal 4.2.0.3 / setup_IDimager_Personal_V4.exe / {app} / Scripts / Meta Data Scripts / Exif PhotoDate to File Date.psc < prev    next >
Text File  |  2008-10-03  |  2KB  |  60 lines

  1. var
  2.   i: Integer;
  3.   ATif: TTif;
  4.   ACatItem: TCatalogItem;
  5. begin
  6.   Progress.Cancel := False;
  7.   Progress.UseProgress;
  8.   Progress.Max := Selected.Count;
  9.   Progress.Pos := 0;
  10.   Progress.Show;
  11.  
  12.   ACatItem := TCatalogItem.Create(nil);
  13.   try
  14.     for i := 0 to Selected.Count - 1 do
  15.     begin
  16.       Progress.Pos := i + 1;
  17.       Progress.ProgressText := Selected.Items[i].FileNameOnly;
  18.  
  19.       // skip read only files
  20.       if FileIsReadOnly (Selected.Items[i].FileName) or (not Selected.Items[i].MediumLoaded) then
  21.         Continue;
  22.                                         
  23.       ATif := TTif.Create(nil);
  24.       try
  25.         ATif.FileName := Selected.Items[i].ExifFileName;
  26.  
  27.         // load the meta data
  28.         ATif.WithSubIFDs := False;    // no need for SubIFDs
  29.         ATif.DataSizeLimit := 512;    // no need for larger tags
  30.         ATif.Load (True, False);
  31.  
  32.         SetFileDate (Selected.Items[i].FileName, ATif.PhotoExifDate);    // set the photo date as the file-date
  33.  
  34.         // update the catalog if available
  35.         if Catalog.FindImageCombined (Selected.Items[i], ACatItem, False, phtNone) then
  36.         begin
  37.           ACatItem.FileStamp      := ATif.PhotoExifDate;
  38.           ACatItem.DateTimeStamp  := ATif.PhotoExifDate;
  39.  
  40.           Catalog.StoreItemToDatabase (ACatItem, False);
  41.         end;
  42.       finally
  43.         ATif.Free;
  44.       end;
  45.  
  46.       if Progress.Cancel then
  47.         break;
  48.     end;
  49.   finally
  50.     ACatItem.Free;
  51.   end;
  52.  
  53.   Progress.Hide;
  54.  
  55.   if Progress.Cancel then
  56.     Say ('Cancelled')
  57.   else
  58.     Say ('Finished. You may need to refresh the collection in order to see the changes.');
  59. end;
  60.